<?php

require_once("regras/dao/veiculoVendaDao.php");

class VeiculoVendaNegocio {

    public function retornaVendedores($conexao) {
        $objDao = new VeiculoVendaDao();
        return $objDao->retornaVendedores($conexao);
    }

    public function retornaAvalistas($conexao) {
        $objDao = new VeiculoVendaDao();
        return $objDao->retornaAvalistas($conexao);
    }

    public function retornaClientes($conexao) {
        $objDao = new VeiculoVendaDao();
        return $objDao->retornaClientes($conexao);
    }

    public function retornaCorretores($conexao) {
        $objDao = new VeiculoVendaDao();
        return $objDao->retornaCorretores($conexao);
    }

    public function retornaVeiculos($conexao, $arrayDados) {
        $objDao = new VeiculoVendaDao();
        return $objDao->retornaVeiculos($conexao, $arrayDados);
    }

    public function venderVeiculo($conexao, $dadosVenda) {
        $objDao = new VeiculoVendaDao();
        $idMovimento = $objDao->gerarMovimento($conexao, $dadosVenda);

        if ($idMovimento > 0) {
            if ($dadosVenda["entrada"] > 0) {
                $retornoTE = $objDao->gerarTituloEntrada($conexao, $dadosVenda, $idMovimento);
                if (!$retornoTE) {
                    //PTCTE: Problema ao tentar cadastrar titulo de entrada.
                    throw new Exception("PTCTE");
                    return;
                }

                $dadosVenda["tituloEntrada"] = 0;
                $dadosVenda["parcelas"] = $dadosVenda["parcelas"] - 1;
            }

            $retornoTitulos = $objDao->gerarTitulos($conexao, $dadosVenda, $idMovimento);
            if (!$retornoTitulos) {
                //PTCT: Problema ao tentar cadastrar titulo.
                throw new Exception("PTCT");
                return;
            }

            if (!empty($dadosVenda["valorCorretagem"]) && ($dadosVenda["valorCorretagem"] > 0)) {
                $idMovimentoCorretagem = $objDao->gerarMovimentoCorretagem($conexao, $dadosVenda);
                if ($idMovimentoCorretagem > 0) {
                    $retornoTitulosCorretagem = $objDao->gerarTitulosCorretagem($conexao, $dadosVenda, $idMovimentoCorretagem);
                    if (!$retornoTitulosCorretagem) {
                        //PTCTE: Problema ao tentar cadastrar titulo da corretagem.
                        throw new Exception("PTCTC");
                        return;
                    }
                } else {
                    //PTCM: Problema ao tentar cadastrar movimento de corretagem.
                    throw new Exception("PTCMC");
                }
            }

            $retornoVeiculoEstoque = $objDao->removerVeiculoEstoque($conexao, $dadosVenda);
            if (!$retornoVeiculoEstoque) {
                //PTRVE: Problema ao tentar remover veículo do estoque
                throw new Exception("PTRVE");
                return;
            }

            return $idMovimento;
        } else {
            //PTCM: Problema ao tentar cadastrar movimento.
            throw new Exception("PTCM");
        }
    }

    public function retornaTitulosMovimento($conexao, $idMovimento) {

        $objDao = new VeiculoVendaDao();
        return $objDao->retornaTitulosMovimento($conexao, $idMovimento);
    }

    public function atualizarTitulos($titulos,$conexao){
        
        $objDao = new VeiculoVendaDao();
        return $objDao->atualizarTitulos($titulos,$conexao);
    }
}

?>